#include<bits/stdc++.h>
using namespace std;

const int N = 1e5+100;
int n, k, max;
int H[N], W[N];

bool check(int mid)
{
	int s = 0;
	for(int i=1; i<=n; i++)
	{
		s += (H[i] / mid) * (W[i] / mid);
	}
	return s >= k;
}

int main()
{
	cin >> n >> k;
	for(int i=1; i<=n; i++)
	{
		cin >> H[i] >> W[i];
	}
	
	int left=0, right=N+1;
	while(left+1 < right)
	{
		int mid = left + (right - left) / 2;
		if(check(mid))
			left = mid;
		else
			right = mid;
	}
	cout << left << endl;
	
	return 0;
 } 




//方法二 
//#include<bits/stdc++.h>
//using namespace std;
//
//int L[100005], W[100005];
//
//int main()
//{
//	int n, k;
//	cin >> n >> k;
//	for(int i=1; i<=n; i++)
//		cin >> L[i] >> W[i];
//	int i = 10000;
//	while(true)
//	{
//		
//		int sum=0, num1, num2;
//		for(int j=1; j<=n; j++)
//		{
//			num1 = L[j] / i;
//			num2 = W[j] / i;
//			sum += num1 + num2;
//		}
//		if(sum >= k)
//			break;
//		i--;
//	}
//	cout << i << endl;
//}
